<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<title>DNMP - сервисы</title>
<link href="ice.css" type="text/css" rel="stylesheet"/>
</head>
<body>
<title>Сервисы</title>
<p><b>Distributed Network Messaging Protocol</b></p>

<p>Коммерческое использование только с разрешения автора.<br>
При использовании необходимо явно указывать ссылку на источник.</p>

<p>Sergey Bodrov, 2010-04-08</p>

<p><b>Сервисы</b></p>

<p><b>Описание</b></p>

<p>Сервисы служат для обеспечения различного пользовательского функционала - групповых чатов (каналов), форумов, блогов, поиска файлов, итд.. Сервисы обеспечиваются узлами. Узел, предоставляющий сервис, считается сервером. Клиенты могут пользоваться сервисами с разных узлов.</p>

<p><b>Управление сервисами</b></p>

<p>Сервисы управляются командами. Команды имеют вид:<br>
&lt;команда&gt; [аргумент_1] [аргумент_2] ... [аргумент_n]<br>
В одном пакете может быть несколько команд, разделенных символами перевода строки. В этом случае первая команда BATH без параметров.</p>

<p><b>Каталог сервисов</b></p>

<p>Каталог сервисов - это список доступных сервисов, которые есть на данном узле. Узел может включать в каталог как свои собственные сервисы, так и сервисы с других узлов (транзитные сервисы). Каталог сервисов сам является сервисом и управляется командами.</p>

<p><b>Запросы и подписка</b></p>

<p>Сервисы могут работать по запросам и по подписке. Клиент может отправить запрос (команду) на выбранный сервис и получить ответ. В случае подписки на сервис, информация передается клиенту без запроса.</p>
<p>Донор - это узел, который раздает информацию подписчикам. Доноры могут соединяться в цепочки. При недоступности донора подписчик может подключиться к другому донору сервиса.</p>

<p><b>Онлайн и оффлайн</b></p>

<p>В онлайновом сервисе сообщения доставляются от отправителя до получателя без задержек. Если получатель недоступен или не может принять сообщение за установленное время, то сообщение уничтожается и возвращается сообщение о недоступности получателя.</p>
<p>В оффлайновом сервисе сообщения могут задерживаться по пути следования к получателю и передаваться по мере возможности. Если получатель или промежуточный узел недоступен, то сообщение хранится на крайнем узле некоторое время. Если за это время не удалось передать сообщение, то сообщение уничтожается и возвращается сообщение об ошибке доставки.</p>
<p>Недоставленные оффлайновые сообщения могут накапливаться до некоторого предела. Новые сообщения свыше этого предела замещают самые ранние.</p>

<p><b>Локальные и распределенные сервисы</b></p>

<p>Локальные сервисы доступны только на одном узле-владельце. Для использования локального сервиса необходимо отправлять запросы по адресу узла-владельца.</p>
<p>Распределенные сервисы доступны на всех узлах-подписчиках. Обмен информацией происходит в обе стороны иерархии подчинения (подписки). Полученную информацию узел отправляет всем своим подписчикам и донорам.</p>

<p><b><u>Описания отдельных сервисов</u></b></p>
<ul>
<li><a href="auth.htm">AUTH (Authentication) - Аутентификация</a>
<li><a href="info.htm">INFO (Information) - Обмен служебной информацией</a>
<li><a href="usrd.htm">USRD (Users Directory) - Каталог пользователей</a>
<li><a href="srvd.htm">SRVD (Services Directory) - Каталог сервисов</a>
<li><a href="grpc.htm">GRPC (Group Chat) - Канал, групповой чат</a>
<li><a href="flst.htm">FLST (Files Storage) - Хранилище файлов</a>
<li><a href="chat.htm">CHAT (Short messages) - Чат, короткие сообщения между пользователями</a>
<li><a href="mail.htm">MAIL (Long messages) - Почта, длинные сообщения между пользователями</a>
<li><a href="foru.htm">FORU (Forums) - Форумы</a>
</ul>

</body>
</html>